package gamefw.gameplugin;


/**
 * A factory for creating Game Logic related objects.
 * The concrete implementations of this factory will be called by the
 * framework to create all game logic related objects.
 */
public interface GameAbstractFactory {

	/**
	 * Creates a new GameLogic object.
	 *
	 * @return the game logic
	 */
	public AbstractGameLogic createGameLogic();

	/**
	 * Creates a new GameBoard object.
	 *
	 * @return the concrete game board implementation
	 */
	public GameBoard createGameBoard();

	/**
	 * Creates a Player object.
	 *
	 * @param playerType the player type. 0 for human and 1 for computer
	 * @return the concrete IPlayer implementation
	 */
	public IPlayer createPlayer(int playerType);

	/**
	 * Creates the list of game entities that will be used in the game.
	 *
	 * @param entities the list of entity names
	 * @return the list of concrete GameEntity implementations
	 */
	public GameEntity[] createGameEntities(String [] entities);

}